import logica.DiccionarioDeVocabulario;
import java.util.Vector;
import java.io.IOException;
import java.lang.ArrayIndexOutOfBoundsException;

public class Diccionario{
    public static void main(String[] args){
        DiccionarioDeVocabulario diccionario = new DiccionarioDeVocabulario();
        System.out.println("Cargando diccionario...");
        diccionario.cargarDiccionario();
        if(args.length != 0){
            buscar(args[0], diccionario);
        }
        else{
            System.out.println("Ingresando al modo interactivo...");
            while(true){
                String comando = "";
                String palabra = "";
                String texto = "";
                System.out.print(">>> ");
                byte[] cadena = new byte[50];
                try {
                    System.in.read(cadena);
                }
                catch(IOException e){
                    System.out.print("Error");
                }
                texto = (new String(cadena)).trim();
                try{
                    comando = texto.split(" ")[0];
                    palabra = texto.split(" ")[1];
                }
                catch(ArrayIndexOutOfBoundsException e){
                    if(comando.equalsIgnoreCase("salir")){
                        System.exit(0);
                    }
                    System.out.println("Uso: <comando> <palabra> [<palabra>]");
                    System.out.println("<comando> := agregar | buscar | borrar | modificar | guardar todo | salir");
                    continue;
                }
                if(comando.equalsIgnoreCase("agregar")){
                    diccionario.getRaiz().agregarPalabra(palabra);
                }
                else if(comando.equalsIgnoreCase("buscar")){
                    buscar(palabra, diccionario);
                }
                else if(comando.equalsIgnoreCase("borrar")){
                    diccionario.getRaiz().borrarPalabra(palabra);
                }
                else if(comando.equalsIgnoreCase("modificar")){
                    String palabraNueva = texto.split(" ")[2];
                    diccionario.getRaiz().modificarPalabra(palabra, palabraNueva);
                }
                else if(comando.equalsIgnoreCase("guardar")){
                    diccionario.guardarDiccionario();
                }
                else{
                    System.out.println("\""+ comando + "\" comando incorrecto");
                    continue;
                }
            }
        }
    }

    public static void buscar(String cadena, DiccionarioDeVocabulario diccionario){
            Vector resultado = diccionario.getRaiz().buscarCoincidencias(cadena);
            if(resultado != null){
                for(int i=0;i<resultado.size();i++){
                    System.out.println(resultado.elementAt(i));
                }
                if(resultado.size() != 0){
                    System.out.println("Total de coincidencias: "+resultado.size());
                }
            }
    }
}
